import {NgModule} from '@angular/core';
import {CommonModule, DatePipe} from '@angular/common';
import {FormsModule, ReactiveFormsModule} from '@angular/forms';


import {MonitorRoutingModule} from './monitor-routing.module';
import {MonitorComponent} from './monitor.component';
import {SharedModule} from '../../shared/shared.module';

import {TurbineListComponent} from './turbine-list/turbine-list.component';
import {TurbineDataListComponent} from './turbine-data-list/turbine-data-list.component';
import {FarmSelectorComponent} from './farm-selector/farm-selector.component';
import {TurbineComponent} from './turbine-list/turbine/turbine.component';
import {TurbineMatrixComponent} from './turbine-matrix/turbine-matrix.component';
import {MatrixTagSelectorComponent} from './turbine-matrix/matrix-tag-selector/matrix-tag-selector.component';
import {FarmMultiSelectorComponent} from './turbine-matrix/farm-multi-selector/farm-multi-selector.component';

import {InverterListComponent} from './inverter-list/inverter-list.component';
import {FarmService} from '../../service/farm.service';
import {TurbStatusService} from '../../service/turbstatus.service';
import {PhaseService} from '../../service/phase.service';
import {CircuitService} from '../../service/circuit.service';
import {TagService} from '../../service/tag.service';
import {MaterialSharedModule} from '../../shared/material-shared.module';
import {MatrixFarmComponent} from './turbine-matrix/matrix-farm/matrix-farm.component';
import {MatrixTurbineComponent} from './turbine-matrix/matrix-turbine/matrix-turbine.component';
import {MatrixTotalComponent} from './turbine-matrix/matrix-total/matrix-total.component';
import {TurbineTrendComponent} from './turbine-trend/turbine-trend.component';
import {TurbineLoadComponent} from './turbine-load/turbine-load.component';
import {FarmLoadTrendComponent} from './farm-load-trend/farm-load-trend.component';
import {TagMapService} from '../../service/tag-map.service';
import {MatrixStateGroupService} from '../../service/matrix-state-group.service';
import {MatrixStateService} from '../../service/matrix-state.service';
import {ModelService} from '../../service/model.service';
import {WindPowersService} from '../../service/wind-powers.service';
import {FarmEchartsComponent} from './farm-load-trend/farm-echarts/farm-echarts.component';
import {TurbineDetailComponent} from './turbine-detail/turbine-detail.component';
import {TurbineDetailTooltipComponent} from './turbine-detail/turbine-detail-tooltip/turbine-detail-tooltip.component';
import {TurbineSystemDetailsComponent} from './turbine-detail/turbine-system-details/turbine-system-details.component';
import {StationComponent} from './station/station.component';
import {DeviceTagSelectorModule} from '../common/device-tag-selector/device-tag-selector.module';
import {DeviceDetailModule} from '../common/device-detail/device-detail.module';
import {DataSourceModule} from '../../service/data-source/data-source.module';
import {DeviceService} from '../../service/device.service';
import {DeviceChannelService} from '../../service/device-channel.service';
import {SetofvalueService} from '../../service/setofvalue.service';

import {AlarmListDetailComponent} from './turbine-detail/alarm-list/alarm-list.component'
import {TdDataTableService, TdDialogService} from '@covalent/core';
import {TurbcomponentService} from '../../service/turbcomponent.service';
import {ThreedComponent} from './threed/threed.component';
import {KeytargetComponent} from './keytarget/keytarget.component';
import {AlarmService} from '../../service/alarm/alarm.service';
// import {DragDropModule} from 'primeng/primeng';
// import {OverlayPanelModule} from 'primeng/primeng';
import {OverlayPanelModule} from 'primeng/overlaypanel';
import {DragDropModule} from 'primeng/dragdrop';
import {EchartsModule} from '../common/echarts/echarts.module';
import {MyValidators} from '../../utils/validator/rang';
import {TurboperHistoryService} from '../../service/turboper-history.service';
import {ConvergenceboxListComponent} from './convergencebox-list/convergencebox-list.component';
// import {MdDialogModule} from '@angular/material';
import {MatDialogModule} from '@angular/material';
import {InverterDetailComponent} from './inverter-detail/inverter-detail.component';
import {InverterAlarmListComponent} from './inverter-detail/inverter-alarm-list/inverter-alarm-list.component';
import {ModelParamService} from '../../service/model-param.service';
import {DeviceComponent} from './inverter-list/device/device.component';
import {ConvergenceboxDetailComponent} from './convergencebox-list/convergencebox-detail/convergencebox-detail.component';
import {ConvergenceboxViewComponent} from './convergencebox-list/convergencebox-view/convergencebox-view.component';
import {InverterDetailSystemComponent} from './inverter-detail/inverter-detail-system/inverter-detail-system.component';
import {BoxSubStationComponent} from './boxsubstation/boxsubstation.component';
import {TransformerComponent} from './boxsubstation/transformer/transformer.component';
import {RunStopsService} from '../../service/run-stops.service';
import {FarmModelModule} from '../common/farm-model/farm-model.module';
import {PhotovoltaicModelModule} from '../common/photovoltaic-model/photovoltaic-model.module';
import {CapacityViewComponent} from './capacity-view/capacity-view.component';
import {CapacityChartComponent} from './capacity-view/capacity-chart/capacity-chart.component';
import {CapacityViewService} from '../../service/capacity-view.service';
import {LossElectricityService} from '../../service/loss-electricity.service';
import {NetworkComponent} from './network/network.component';
import {PhotovoltaicCurveComponent} from './photovoltaic-curve/photovoltaic-curve.component';
import {PhotovoltaicEchartsComponent} from './photovoltaic-curve/photovoltaic-echarts/photovoltaic-echarts.component';
import {TableModule} from 'primeng/table';

@NgModule({
  imports: [
    CommonModule,
    MonitorRoutingModule,
    SharedModule,
    FormsModule,
    ReactiveFormsModule,
    MaterialSharedModule,
    DeviceTagSelectorModule,
    DataSourceModule,
    DragDropModule,
    EchartsModule,
    MatDialogModule,
    OverlayPanelModule,
    DeviceDetailModule,
    FarmModelModule,
    PhotovoltaicModelModule,
    TableModule
  ],
  exports: [],
  declarations: [
    MonitorComponent,
    AlarmListDetailComponent,
    InverterDetailSystemComponent,
    TurbineListComponent,
    TurbineDataListComponent,
    FarmSelectorComponent,
    TurbineComponent,
    TurbineMatrixComponent,
    FarmMultiSelectorComponent,
    MatrixTagSelectorComponent,
    MatrixFarmComponent,
    MatrixTurbineComponent,
    TurbineTrendComponent,
    MatrixTotalComponent,
    TurbineTrendComponent,
    TurbineLoadComponent,
    FarmLoadTrendComponent,
    FarmEchartsComponent,
    TurbineDetailComponent,
    TurbineDetailTooltipComponent,
    TurbineSystemDetailsComponent,
    StationComponent,
    ThreedComponent,
    KeytargetComponent,
    ConvergenceboxListComponent,
    ConvergenceboxDetailComponent,
    ConvergenceboxViewComponent,
    InverterListComponent,
    DeviceComponent,
    InverterDetailComponent,
    InverterAlarmListComponent,
    BoxSubStationComponent,
    TransformerComponent,
    InverterDetailSystemComponent,
    CapacityViewComponent,
    CapacityChartComponent,
    NetworkComponent,
    PhotovoltaicCurveComponent,
    PhotovoltaicEchartsComponent
  ],
  providers: [
    MatrixStateGroupService,
    MatrixStateService,
    TagService,
    TagMapService,
    FarmService,
    TurbStatusService,
    PhaseService,
    CircuitService,
    DatePipe,
    ModelService,
    ModelParamService,
    WindPowersService,
    TdDialogService,
    TdDataTableService,
    TurbcomponentService,
    MyValidators,
    TurboperHistoryService,
    DeviceService,
    DeviceChannelService,
    ModelParamService,
    RunStopsService,
    ModelParamService,
    SetofvalueService,
    LossElectricityService,
    CapacityViewService,
    AlarmService
  ],
  // entryComponents: [
  //   FarmCoordinateComponent,
  // ]
})
export class MonitorModule {
}
